for i in range(int(input())):
m,s=map(int,input().split())
l=list(map(int,input().split()))
a=sum(l)
value=a+s
i=1
while True:
if i not in l:
l.append(i)
a=a+i
if a>=value:
break
i=i+1
if a==value and value==(len(l)*(len(l)+1)/2) :
print("YES")
else:
print("NO")
#include "bits/stdc++.h"
using namespace std;
#ifdef LOCAL
#include "../algorithms/misc/debug.h"
#else
#define debug(...) 42
#endif
using ll = long long;
using db = long double;
using vi = vector<int>;
using vl = vector<ll>;
using vd = vector<db>;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
// pairs
#define mp make_pair
#define f first
#define s second
// vectors
#define sz(v) (int)(v.size())
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define pb push_back
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while (t--) {
int m, sum; cin >> m >> sum;
map<int, bool> marked;
int mVal1 = 0, mVal2 = 0;
for (int i = 0; i < m; i++) {
int x; cin >> x;
marked[x] = true;
mVal1 = max(mVal1, x);
}
bool ok = true;
for (int i = 1; i <= 100 && sum; i++) {
if (!marked[i]) {
if (sum - i >= 0) {
sum -= i; mVal2 = i;
marked[i] = true;
} else {
ok = false;
break;
}
}
}
for (int i = 1; i <= max(mVal1, mVal2); i++) {
ok &= marked[i];
}
cout << (ok ? "yes\n" : "no\n");
}
}
535A - Tavas and Nafas | 581A - Vasya the Hipster |
1537B - Bad Boy | 1406B - Maximum Product |
507B - Amr and Pins | 379A - New Year Candles |
1154A - Restoring Three Numbers | 750A - New Year and Hurry |
705A - Hulk | 492B - Vanya and Lanterns |
1374C - Move Brackets | 1476A - K-divisible Sum |
1333A - Little Artem | 432D - Prefixes and Suffixes |
486A - Calculating Function | 1373B - 01 Game |
1187A - Stickers and Toys | 313B - Ilya and Queries |
579A - Raising Bacteria | 723A - The New Year Meeting Friends |
302A - Eugeny and Array | 1638B - Odd Swap Sort |
1370C - Number Game | 1206B - Make Product Equal One |
131A - cAPS lOCK | 1635A - Min Or Sum |
474A - Keyboard | 1343A - Candies |
1343C - Alternating Subsequence | 1325A - EhAb AnD gCd |